home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1122 / 1122.xpi / chrome / tabmixplus.jar / content / tabmixplus / session / promptservice.js next >
Text File  |  2008-09-27  |  9KB  |  209 lines

  1.    var dialogParams, gHideElmParam, gSavedName, gCancelLabel, gOrigName;
  2.  
  3.    function prompt_init() {
  4.       dialogParams = window.arguments[0].QueryInterface(Components.interfaces.nsIDialogParamBlock);
  5.       document.title = dialogParams.GetString(0);
  6.  
  7.       // display the main text
  8.       var i, messageText = dialogParams.GetString(1);
  9.       var messageParent = document.getElementById("tm_info");
  10.       var messageParagraphs = messageText.split("\n");
  11.       gHideElmParam = dialogParams.GetInt(1);
  12.       for (i = 0; i < messageParagraphs.length; i++) {
  13.          var descriptionNode = document.createElement("description");
  14.          var text = document.createTextNode(messageParagraphs[i]);
  15.          descriptionNode.appendChild(text);
  16.          messageParent.appendChild(descriptionNode);
  17.       }
  18.  
  19.       // display the menulist
  20.       gHideElmParam = dialogParams.GetInt(1);
  21.       var menuList = document.getElementById("tm_prompt");
  22.       if (gHideElmParam == SHOW_MENULIST) {
  23.          var index, isDisabled, popup = document.getElementById("tm_prompt_menu");
  24.          SessionManager.createMenuForDialog(popup, dialogParams.GetInt(3));
  25.          switch ( dialogParams.GetInt(3) ) {
  26.             case SELECT_CRASH: index = popup.childNodes.length - 1;
  27.                break;
  28.             case SHOW_CLOSED_WINDOW_LIST: index = 1; // 0 is menuseparator
  29.                break;
  30.             default:
  31.                index = menuList.defaultIndex;
  32.                if (index >= popup.childNodes.length || index < 0) index = 1;
  33.                isDisabled = popup.childNodes[index].getAttribute("disabled") == "true";
  34.                // select the first entry that isn't menuseparator and not "disabled"
  35.                if (!isDisabled) break;
  36.                var item;
  37.                for (i = 1; i < popup.childNodes.length; ++i) {
  38.                   item = popup.childNodes[i];
  39.                   if (item.localName == "menuseparator") continue;
  40.                   if (item.getAttribute("disabled") != "true") {
  41.                      index = i;
  42.                      break;
  43.                   }
  44.                }
  45.          }
  46.          menuList.selectedIndex = index;
  47.       } else menuList.hidden = true;
  48.  
  49.       // display the textBox
  50.       var textBox = document.getElementById("tm_textbox");
  51.       if (gHideElmParam == SHOW_TEXTBOX) {
  52.          messageParent.lastChild.setAttribute("style","height:3em");
  53.          gSavedName = dialogParams.GetString(2).split("\n");
  54.          textBox.value = gSavedName.shift();
  55.          gOrigName = textBox.value.toLowerCase();
  56.       }
  57.       else textBox.hidden = true;
  58.  
  59.       // display the checkbox
  60.       var checkBox = document.getElementById("tm_checkbox");
  61.       var check = dialogParams.GetInt(2);
  62.       if (check != HIDE_CHECKBOX) {
  63.          document.getElementById("checkboxContainer").removeAttribute("collapsed");
  64.          checkBox.checked = check == CHECKBOX_CHECKED;
  65.          setLabelForNode(checkBox, dialogParams.GetString(3));
  66.       }
  67.  
  68.       // display the command buttons
  69.       var aButtons, buttons = ["accept", "cancel", "extra1"];
  70.       var btnLabels = dialogParams.GetString(4).split("\n");
  71.       var maxWidth = 0;
  72.       for (i = 0; i < buttons.length; ++i) {
  73.          aButtons = document.documentElement.getButton(buttons[i]);
  74.          if (i < btnLabels.length && btnLabels[i] != "") {
  75.             setLabelForNode(aButtons, btnLabels[i]);
  76.          }
  77.          else aButtons.hidden = true; // hide extra button
  78.       }
  79.  
  80.       // Set and focus default button
  81.       var dButton = buttons[dialogParams.GetInt(0)];
  82.       var dialog = document.documentElement;
  83.       dialog.defaultButton = dButton;
  84.       if (gHideElmParam == HIDE_MENUANDTEXT) { // hide menulist & text box and set focus to default Button
  85.          document.getElementById("space_befor_checkbox").hidden = true;
  86.          dialog.getButton(dButton).focus();
  87.       }
  88.  
  89.       if (gHideElmParam == SHOW_TEXTBOX) {
  90.          dialog.getButton("extra1").hidden = true;
  91.          gCancelLabel = dialog.getButton("cancel").label;
  92.          inputText(textBox);
  93.       }
  94.    }
  95.  
  96.    function prompt_deinit(button) {
  97.       dialogParams.SetInt(4, button); // ok = 0; cancel = 1; extra1 = 2;
  98.       dialogParams.SetInt(5, document.getElementById("tm_checkbox").checked);
  99.       if (gHideElmParam < HIDE_MENUANDTEXT) {
  100.          if (gHideElmParam == SHOW_MENULIST) {
  101.             var item = document.getElementById("tm_prompt").selectedItem;
  102.             dialogParams.SetString(5, item.session);
  103.             dialogParams.SetInt(6, item.getAttribute("value"));
  104.          }
  105.          else dialogParams.SetString(5, document.getElementById("tm_textbox").value);
  106.       }
  107.    }
  108.  
  109.    function prompt_extra1(button) {
  110.       prompt_deinit(button);
  111.       window.close();
  112.    }
  113.  
  114.    function inputText(textBox) {
  115.       var btnOK = document.documentElement.getButton("accept");
  116.       var btnCancel = document.documentElement.getButton("cancel");
  117.       var btnExt = document.documentElement.getButton("extra1");
  118.       var msg = [];
  119.       var bundle_session = document.getElementById("bundle_session_manager");
  120.       msg[0] = "";
  121. /*
  122.       var msg1 = "Name must be at least one letter or number."
  123.       var msg2 = "This name already in use!"
  124.       var msg3 = "Are you sure you want to replace the session?"
  125.       var cLabel = "&Don't Replace";
  126. */
  127.       msg[1] = bundle_session.getString("sm.sessionName.msg1");
  128.       msg[2] = bundle_session.getString("sm.sessionName.msg2");
  129.       msg[3] = msg[2] + ", " + bundle_session.getString("sm.sessionName.msg3");
  130.       var cLabel = SessionManager.setLabel("sm.replaceStartup.button1");
  131.  
  132.       var description = document.getElementById("tm_info").lastChild.firstChild;
  133.       textBox.value = textBox.value.replace(/^[\s]+/g,"");
  134.       var name = textBox.value.toLowerCase();
  135.       var msgReplace, validName = 0;
  136.       if (name == "") validName = 1;
  137.       if (validName==0) {
  138.          for (var i = 0; i < gSavedName.length; i++) {
  139.             if (name == gSavedName[i].toLowerCase() && gSavedName[i] != "" ) {
  140.                if (dialogParams.GetInt(3) == DLG_RENAME) {
  141.                   if (gOrigName != name) validName = 2;
  142.                   continue;
  143.                }
  144.                validName = 3;
  145.                dialogParams.SetInt(6, i);
  146.                break;
  147.             }
  148.          }
  149.       }
  150.       switch ( validName ) {
  151.          case 0:
  152.             if (btnOK.disabled) btnOK.disabled = false;
  153.             if (btnOK.hidden) btnOK.hidden = false;
  154.             if (!btnExt.hidden) {
  155.                btnExt.hidden = true;
  156.                if (dialogParams.GetInt(3) == DLG_SAVE) setLabelForNode(btnCancel,gCancelLabel);
  157.             }
  158.             description.replaceData(0,description.length, "");
  159.             document.documentElement.defaultButton = "accept";
  160.             break;
  161.          case 1:
  162.          case 2:
  163.             if (btnOK.hidden) btnOK.hidden = false;
  164.             if (!btnOK.disabled) btnOK.disabled = true;
  165.             if (!btnExt.hidden) {
  166.                btnExt.hidden = true;
  167.                if (dialogParams.GetInt(3) == DLG_SAVE) setLabelForNode(btnCancel,gCancelLabel);
  168.             }
  169.             document.documentElement.defaultButton = "cancel";
  170.             break;
  171.          case 3:
  172.             if (!btnOK.hidden) btnOK.hidden = true;
  173.             btnExt.hidden = false;
  174.             if (dialogParams.GetInt(3) == DLG_SAVE) setLabelForNode(btnCancel,cLabel);
  175.             document.documentElement.defaultButton = "cancel";
  176.             break;
  177.       }
  178.       description.replaceData(0,description.length, msg[validName]);
  179.    }
  180.  
  181.    function TM_PromptService(intParam, strParam, aWindow) {
  182.       var dpb = Components.classes["@mozilla.org/embedcomp/dialogparam;1"]
  183.                           .createInstance(Components.interfaces.nsIDialogParamBlock);
  184.       // intParam[0] - default button accept=0, cancel=1, extra1=2
  185.       // intParam[1] - show menuList= 1 , show textBox= 0, hide_both= 2
  186.       // intParam[2] - set checkbox checked  true=1 , false=0, hide=2
  187.       // intParam[3] - flag  - for menuList contents: flag to set menu selected item
  188.       //                     - for textBox rename: 1 , save: 0
  189.       var i;
  190.       for (i = 0; i < intParam.length; i++)
  191.          dpb.SetInt(i, intParam[i]);
  192.       // strParam labels for: title, msg, testbox.value, checkbox.label, buttons[]
  193.       // buttons[]: labels array for each button
  194.       for (i = 0; i < strParam.length; i++)
  195.          dpb.SetString(i, strParam[i]);
  196.  
  197.       var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
  198.                            .getService(Components.interfaces.nsIWindowWatcher);
  199.       if (typeof(aWindow) == "undefined") {
  200.          try { aWindow = window;
  201.          }
  202.          catch (e) { aWindow = null;
  203.          }
  204.       }
  205.       ww.openWindow(aWindow,
  206.                "chrome://tabmixplus/content/session/promptservice.xul","",'centerscreen,modal',dpb);
  207.       return {button: dpb.GetInt(4), checked: (dpb.GetInt(5) == CHECKBOX_CHECKED), label: dpb.GetString(5), value: dpb.GetInt(6)};
  208.    }
  209.